#!/bin/bash

# SmartInput 手机证书安装助手
# 启动HTTP服务器，方便手机下载和安装CA证书

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

print_message() {
    local color=$1
    local message=$2
    echo -e "${color}${message}${NC}"
}

PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CERTS_DIR="$PROJECT_ROOT/certs"

print_message $BLUE "📱 SmartInput 手机证书安装助手"
print_message $BLUE "==============================="

# 检查证书是否存在
if [ ! -f "$CERTS_DIR/ca-cert.pem" ]; then
    print_message $RED "❌ CA证书不存在，请先运行 ./scripts/quick-ssl-setup.sh"
    exit 1
fi

# 获取本机IP地址
LOCAL_IP=$(ip route get 1.1.1.1 2>/dev/null | grep -oP 'src \K\S+' || hostname -I | awk '{print $1}')

print_message $GREEN "✅ 本机IP地址: $LOCAL_IP"

# 检查可用端口
PORT=8080
while lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; do
    PORT=$((PORT + 1))
done

print_message $YELLOW "🌐 使用端口: $PORT"

# 创建临时HTML页面
TEMP_HTML="$CERTS_DIR/mobile-install.html"
cat > "$TEMP_HTML" << EOF
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SmartInput 证书安装</title>
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
            max-width: 600px;
            margin: 0 auto;
            padding: 20px;
            background: #f5f5f5;
            color: #333;
        }
        .container {
            background: white;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            text-align: center;
        }
        h1 {
            color: #2563eb;
            margin-bottom: 30px;
        }
        .download-btn {
            display: inline-block;
            background: #2563eb;
            color: white;
            padding: 15px 30px;
            border-radius: 8px;
            text-decoration: none;
            font-size: 18px;
            margin: 20px 0;
        }
        .download-btn:hover {
            background: #1d4ed8;
        }
        .step {
            text-align: left;
            margin: 20px 0;
            padding: 15px;
            background: #f8fafc;
            border-radius: 8px;
            border-left: 4px solid #2563eb;
        }
        .warning {
            background: #fef2f2;
            border-left-color: #dc2626;
            color: #dc2626;
        }
        .success {
            background: #f0fdf4;
            border-left-color: #16a34a;
            color: #16a34a;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>🔒 SmartInput CA证书安装</h1>
        
        <p>为了让SmartInput正常工作，您需要安装我们的CA证书到您的手机。</p>
        
        <a href="/ca-cert.pem" class="download-btn">📥 下载CA证书</a>
        
        <div class="step">
            <h3>📱 Android 安装步骤：</h3>
            <ol>
                <li>点击上方"下载CA证书"按钮</li>
                <li>打开"设置" → "安全性与位置信息"</li>
                <li>点击"加密与凭据"</li>
                <li>选择"安装证书" → "CA证书"</li>
                <li>选择下载的证书文件</li>
                <li>为证书命名（如"SmartInput CA"）</li>
                <li>点击"确定"完成安装</li>
            </ol>
        </div>
        
        <div class="step">
            <h3>📱 iOS 安装步骤：</h3>
            <ol>
                <li>点击上方"下载CA证书"按钮</li>
                <li>系统会提示安装描述文件，点击"安装"</li>
                <li>前往"设置" → "通用" → "VPN与设备管理"</li>
                <li>点击"SmartInput Local CA"描述文件</li>
                <li>点击"安装"</li>
                <li><strong>重要：</strong>前往"设置" → "通用" → "关于本机" → "证书信任设置"</li>
                <li>启用"SmartInput Local CA"的完全信任</li>
            </ol>
        </div>
        
        <div class="step success">
            <h3>✅ 验证安装：</h3>
            <p>安装完成后，在手机浏览器中访问：</p>
            <p><strong>https://$LOCAL_IP:3001/health</strong></p>
            <p>如果看到绿色锁图标，说明证书安装成功！</p>
        </div>
        
        <div class="step warning">
            <h3>⚠️ 注意事项：</h3>
            <ul>
                <li>此证书仅用于SmartInput开发和测试</li>
                <li>请确保手机和电脑在同一WiFi网络</li>
                <li>如果无法下载，请尝试刷新页面</li>
            </ul>
        </div>
    </div>
</body>
</html>
EOF

print_message $GREEN "🎉 准备完成！"
print_message $BLUE "==============================="

print_message $YELLOW "📋 使用说明："
echo ""
echo "1. 确保手机和电脑连接到同一WiFi网络"
echo "2. 在手机浏览器中访问："
echo "   http://$LOCAL_IP:$PORT"
echo ""
echo "3. 按照页面说明下载并安装证书"
echo ""
echo "4. 安装完成后，验证连接："
echo "   https://$LOCAL_IP:3001/health"

print_message $BLUE "📖 详细说明："
echo "服务器将在端口 $PORT 上运行"
echo "按 Ctrl+C 停止服务器"

print_message $YELLOW "🚀 启动HTTP服务器..."

# 启动HTTP服务器
cd "$CERTS_DIR"

# 使用Python启动HTTP服务器
if command -v python3 &> /dev/null; then
    python3 -m http.server $PORT
elif command -v python &> /dev/null; then
    python -m http.server $PORT
else
    print_message $RED "❌ 未找到Python，无法启动HTTP服务器"
    print_message $YELLOW "请手动将 ca-cert.pem 文件传输到手机"
    exit 1
fi

# 清理临时文件
rm -f "$TEMP_HTML" 